<?php
/** ******************************************************************************
 * brophp.com 框架内置的函数库文件，声明在这个文件中的函数可以任何位置直接调用。 *
 * *******************************************************************************
 * 许可声明：专为《细说PHP》读者及LAMP兄弟连学员提供的“学习型”超轻量级php框架。*
 * *******************************************************************************
 * 版权所有 (C) 2011-2013 北京易第优教育咨询有限公司，并保留所有权利。           *
 * 网站地址: http://www.lampbrother.net (LAMP兄弟连)                             *
 * *******************************************************************************
 * $Author: 高洛峰 (skygao@lampbrother.net) $                                    *
 * $Date: 2011-07-18 10:00:00 $                                                  * 
 * ******************************************************************************/

/*
 * 输出各种类型的数据，调试程序时打印数据使用。
 * 参数：可以是一个或多个任意变量或值
 */
function p() {
	$args = func_get_args (); // 获取多个参数
	if (count ( $args ) < 1) {
		Debug::addmsg ( "<font color='red'>必须为p()函数提供参数!" );
		return;
	}
	
	echo '<div style="width:100%;text-align:left"><pre>';
	// 多个参数循环输出
	foreach ( $args as $arg ) {
		if (is_array ( $arg )) {
			print_r ( $arg );
			echo '<br>';
		} else if (is_string ( $arg )) {
			echo $arg . '<br>';
		} else {
			var_dump ( $arg );
			echo '<br>';
		}
	}
	echo '</pre></div>';
}
/*
 * 创建Models中的数据库操作对象
 * $className 类名
 * $app 应用名 访问其他应用的Model
 */
function D($className = null, $app = "") {
	$db = null;
	// 如果没有传表名或类名，则直接创建DB对象，但不能对表进行操作
	if (is_null ( $className )) {
		$class = "D" . DRIVER;
		
		$db = new $class ();
	} else {
		$className = strtolower ( $className );
		$model = Structure::model ( $className, $app );
		$model = new $model ();
		
		// 如果表结构不存在，则获取表结构
		$model->setTable ( $className );
		
		$db = $model;
	}
	if ($app == "")
		$db->path = APP_PATH;
	else
		$db->path = PROJECT_PATH . strtolower ( $app ) . '/';
	return $db;
}
/*
 * 文件尺寸转换，将大小将字节转为各种单位大小
 * 参数$bytes：字节大小
 */
function tosize($bytes) { // 自定义一个文件大小单位转换函数
	if ($bytes >= pow ( 2, 40 )) { // 如果提供的字节数大于等于2的40次方，则条件成立
		$return = round ( $bytes / pow ( 1024, 4 ), 2 ); // 将字节大小转换为同等的T大小
		$suffix = "TB"; // 单位为TB
	} elseif ($bytes >= pow ( 2, 30 )) { // 如果提供的字节数大于等于2的30次方，则条件成立
		$return = round ( $bytes / pow ( 1024, 3 ), 2 ); // 将字节大小转换为同等的G大小
		$suffix = "GB"; // 单位为GB
	} elseif ($bytes >= pow ( 2, 20 )) { // 如果提供的字节数大于等于2的20次方，则条件成立
		$return = round ( $bytes / pow ( 1024, 2 ), 2 ); // 将字节大小转换为同等的M大小
		$suffix = "MB"; // 单位为MB
	} elseif ($bytes >= pow ( 2, 10 )) { // 如果提供的字节数大于等于2的10次方，则条件成立
		$return = round ( $bytes / pow ( 1024, 1 ), 2 ); // 将字节大小转换为同等的K大小
		$suffix = "KB"; // 单位为KB
	} else { // 否则提供的字节数小于2的10次方，则条件成立
		$return = $bytes; // 字节大小单位不变
		$suffix = "Byte"; // 单位为Byte
	}
	return $return . " " . $suffix; // 返回合适的文件大小和单位
}

